﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebRamosUC.Models
{
    public partial class Horario
    {
        public override string ToString()
        {
            return ModulosString;
        }

        public string[] Detalles()
        {
            
            string[] a = new string[] { "||" };
            string[] horas = ModulosString.Split(a, StringSplitOptions.RemoveEmptyEntries);

            string[] salas = SalasString.Split(a, StringSplitOptions.RemoveEmptyEntries);

            string[] detalles = new string[horas.Length];

            for (int i = 0; i < horas.Length; i++)
            {
                if(i<salas.Length)
                    detalles[i] += detectarTipo(horas[i]) + horas[i] + " - " + salas[i]+"\n";
                else
                    detalles[i] += detectarTipo(horas[i]) + horas[i] + " - " + "(Sin sala)" + "\n";
            }


            return detalles;
        }

        private string detectarTipo(string horas)
        {
            foreach (Modulo m in Modulos)
            {
                if (horas.Contains(diaSemana(m.DiaSemana)) && horas.Contains(""+m.NumModulo))
                    return "("+m.TipoActividad.Nombre+") ";
            }


            return "";
        }

        private char diaSemana(int dia)
        {
            if (dia == 1)
                return 'L';
            else if (dia == 2)
                return 'M';
            else if (dia == 3)
                return 'W';
            else if (dia == 4)
                return 'J';
            else if (dia == 5)
                return 'V';
            else if (dia == 6)
                return 'S';
            else
                return 'D';
        }

        /// <summary>
        /// Se encapsula a si mismo en una IEnumerable (de 1 elemento, claro). Usado para el ViewHorarioControl.
        /// </summary>
        public IEnumerable<Horario> ToIEnumerable()
        {
            return new Horario[] { this };
        }


        /// <summary>
        /// Retorna el modulo correspondiente al dia y Mod dados, o NULL si no existe.
        /// </summary>
        public Modulo GetModulo(int diaSemana, int numModulo)
        {
            return this.Modulos.SingleOrDefault(m => m.DiaSemana == diaSemana && m.NumModulo == numModulo);
        }
    }


    public partial class Sala
    {
        public override string ToString()
        {
            return Nombre +", "+Campus;
        }
    }
}